package com.everspring.mapstruct.use.mapping;

import org.mapstruct.InheritConfiguration;
import org.mapstruct.InheritInverseConfiguration;

import java.util.List;

/**
 * Description： mapstruct基础转换接口
 * Date： 2020/9/18 15:58
 *
 * @author changchun.xue
 */
public interface BaseConvertMapping<SOURCE,TARGET> {
    /**
     * 只适合同名属性映射
     * @param source
     * @return
     */
    TARGET source2Target(SOURCE source);

    /**
     * 反向，映射同名属性
     * @param target
     * @return
     */
    @InheritInverseConfiguration(name = "source2Target")
    SOURCE target2Source(TARGET target);

    /**
     * 映射同名属性，集合形式
     * @param sources 源对象集合
     * @return
     */
    @InheritConfiguration(name = "source2Target")
    List<TARGET> sources2Targets(List<SOURCE> sources);

    /**
     * 反向，映射同名属性，集合形式
     * @param targets 目标对象集合
     * @return
     */
    @InheritConfiguration(name = "target2Source")
    List<SOURCE> targets2Sources(List<TARGET> targets);
}
